Nutch--NIO 异步I/O

#Nutch–NIO 异步I/O

Nutch自带的Fetcher方法的主要工作流程:

  1. fetch方法:配置MapRunnerClass任务并运行Fetcher
  2. Fetcher初始化QueueFeeder,用于从抓取列表添加FetchItem到FetchItemQueue,并由QueueFeeder维护FetchItemQueus队列;之后Fetcher启动QueueFeeder后会创建用户指定数量个FetcherThread线程抓取网页。

QueueFeeder管理FetchItemQueues
FetchItemQueues队列中存放<queueId,FetchItemQueue>类型
其中queueId有三种类型(host,protocol)(ip,protocol)(domain,protocol)
而FetchItemQueue中包含待爬队列和正在爬行队列(Inprogress)

NIOFetcher方法的主要工作流程

  1. fetch方法:配置MapRunnerClass任务并运行NIOFetcher
  2. NIOFetcher初始化并启动三个线程
    • feeder:QueueFeeder线程,从抓取列表添加FetchItem到FetchItemQueue
    • t:FetcherThread线程,抓取线程
    • parser:PageHandler线程,抓取内容处理线程